import axios from 'axios'

// 创建axios实例
const api = axios.create({
  baseURL: 'http://localhost:8080', // 修改为不包含'/api'的基础URL
  timeout: 15000,
  headers: {
    'Content-Type': 'application/json',
    'Accept': 'application/json'
  }
})

// 请求拦截器
api.interceptors.request.use(
  config => {
    // 添加调试日志
    console.log('API请求:', config.method.toUpperCase(), config.url, config.params || config.data || {});
    return config
  },
  error => {
    console.error('请求拦截器错误:', error);
    return Promise.reject(error)
  }
)

// 响应拦截器
api.interceptors.response.use(
  response => {
    // 添加详细的调试日志
    console.log('API响应状态码:', response.status);
    console.log('API响应URL:', response.config.url);
    console.log('API响应数据:', JSON.stringify(response.data, null, 2));
    
    const res = response.data
    // 根据后端返回状态处理
    if (res.code && res.code !== '0' && res.code !== 0) {
      console.error('API响应错误代码:', res.code);
      console.error('API响应错误消息:', res.message || '请求错误');
      return Promise.reject(new Error(res.message || '请求错误'))
    } else {
      return res
    }
  },
  error => {
    // 更详细的错误日志
    console.error('API请求失败:', error);
    
    const errorInfo = {
      url: error.config ? error.config.url : '未知URL',
      status: error.response ? error.response.status : '未知状态码',
      statusText: error.response ? error.response.statusText : '未知状态文本',
      data: error.response ? error.response.data : '无响应数据',
      message: error.message || '未知错误'
    };
    
    console.error('错误详情:', JSON.stringify(errorInfo, null, 2));
    return Promise.reject(error)
  }
)

// 系统相关API
export const systemApi = {
  // 获取合约信息
  getContractInfo() {
    return api.get('/api/system/contract-info')
  },
  // 获取合约所有者
  getOwner() {
    return api.get('/api/system/owner')
  },
  // 转移合约所有权
  transferOwnership(newOwner) {
    return api.post('/api/system/transfer-ownership', null, {
      params: { newOwner }
    })
  },
  // 获取所有权转移记录
  getOwnershipTransfer(txHash) {
    return api.get('/api/system/ownership-transfer', {
      params: { txHash }
    })
  }
}

// 产品相关API
export const productApi = {
  // 获取产品列表
  getProducts() {
    return api.get('/api/product')
  },
  // 获取产品详情
  getProductDetail(productId) {
    return api.get(`/api/product/${productId}`)
  },
  // 添加产品
  addProduct(productData) {
    console.log('API请求 - 添加产品:', JSON.stringify(productData, null, 2));
    return api.post('/api/product', productData)
  },
  // 更新产品信息
  updateProduct(productData) {
    return api.put('/api/product', productData)
  },
  // 添加检验记录
  addInspection(inspectionData) {
    return api.post('/api/product/inspection', inspectionData)
  },
  // 购买/转移产品所有权
  purchaseProduct(purchaseData) {
    return api.post('/api/product/purchase', purchaseData)
  },
  // 删除产品
  deleteProduct(deleteData) {
    return api.delete('/api/product', { data: deleteData })
  },
  // 恢复产品
  restoreProduct(productId) {
    return api.post(`/api/product/restore/${productId}`)
  },
  // 验证数据完整性
  verifyDataIntegrity(verifyData) {
    return api.post('/api/product/verify', verifyData)
  },
  // 获取产品列表(特殊格式)
  getProductsList() {
    console.log('API请求 - 获取产品列表');
    return api.get('/api/product/list')
  },
  // 直接测试获取单个产品
  testGetProduct(productId) {
    console.log('API请求 - 测试获取产品:', productId);
    return api.get(`/api/product/${productId}`)
  }
}

export default {
  system: systemApi,
  product: productApi
} 